package com.xbongbong.sys.model;

import com.xbongbong.paas.toolbox.wrap.IModel;
import com.xbongbong.sys.domain.entity.DepartmentEntity;
import com.xbongbong.sys.domain.entity.UserDepartmentEntity;

import java.util.List;
import java.util.Map;

/**
 * @author: wufeng
 * @date: 2018/9/12 14:31
 * @desrcption: 用户和部门的关系
 */
public interface UserDepartmentModel extends IModel<UserDepartmentEntity> {

    /**
     *  获取部门主管userId列表
     * @author lee
     * @date 2019/1/3 14:25
     * @param department
     * @return
     */
    List<String> getDepManagerList(DepartmentEntity department);


    /**
     * 根据筛选条件获取符合条件的部门id列表
     * @param param 筛选条件
     * @return 返回符合条件的部门id列表
     */
    List<Long> getDepIds(Map<String, Object> param);

    /**
     * 删除指定公司更新时间小于某个时间点的员工部门关系数据，
     * 主要用途是在组织架构同步完成后将未更新到的员工部门关系表信息置为删除状态，
     * 代替原来的提前删除逻辑
     * @param corpid 公司ID
     * @param updateTime 更新时间
     * @return 数据库操作返回，1表示成功，0表示失败
     * @author kaka
     * @date 2018年1月9日
     */
    Integer clearUnauthUserByUpdateTime(String corpid, Integer updateTime);

    /**
     * 删除某个公司的用户部门关系数据
     * @param corpid 公司id
     * @return 影响的记录数
     */
    Integer deleteByCorpId(String corpid);

    /**
     * 根据corpid + 部门ID列表批量删除部门员工关系
     *
     * @param depIds 部门id列表
     * @param corpid 公司id
     * @return 影响记录数
     */
    Integer deleteByDepIds(List<Long> depIds, String corpid);

    /**
     * 根据corpid + userId批量删除部门员工关系
     *
     * @param userId 员工userId
     * @param corpid 公司id
     * @return 影响记录数
     */
    Integer deleteByUserId(String userId, String corpid);
}
